Skip to content

feat(GroupTheory/PGroup): maximal subgroups of abelian p-groups have index p#41652

Open
xroblot wants to merge 5 commits into
leanprover-community:masterfrom
xroblot:cyclic_pgroup_index_prime
Open

feat(GroupTheory/PGroup): maximal subgroups of abelian p-groups have index p#41652
xroblot wants to merge 5 commits into
leanprover-community:masterfrom
xroblot:cyclic_pgroup_index_prime

Conversation

@xroblot

@xroblot xroblot commented Jul 12, 2026

Copy link
Copy Markdown
Collaborator

Building on the API from #41651, prove some results of the maximal subgroups of an abelian p-group:

  • CommGroup.isCoatom_iff_index_eq_prime: in an abelian p-group (finite or infinite) the maximal subgroups are exactly the subgroups of index p.
  • IsPGroup.exists_index_eq_prime_ne_of_not_isCyclic: a finite non-cyclic abelian p-group has two distinct subgroups of index p.

🤖 This PR was extracted from the SKW project by Claude.


xroblot added 3 commits July 12, 2026 15:13
Add three group-theory results:

* `QuotientGroup.comapMk'OrderIso'`: the correspondence theorem as an order isomorphism onto `Set.Ici N` (interval-order variant of `comapMk'OrderIso`).
* `isCyclic_of_isCoatom_subsingleton`: a group with at most one maximal subgroup is cyclic (only `IsCoatomic (Subgroup G)` needed).
* `CommGroup.isSimpleGroup_iff_isCoatom`: a subgroup of a commutative group is maximal iff the quotient by it is simple (group analogue of `isSimpleModule_iff_isCoatom`).
…index p

For an abelian `p`-group:

* `CommGroup.isCoatom_iff_index_eq_prime`: the maximal subgroups are exactly the subgroups of index `p` (no finiteness needed).
* `IsPGroup.exists_index_eq_prime_ne_of_not_isCyclic`: a finite non-cyclic abelian `p`-group has two distinct subgroups of index `p`.
@github-actions github-actions Bot added the t-group-theory Group theory label Jul 12, 2026
@github-actions

github-actions Bot commented Jul 12, 2026

Copy link
Copy Markdown

PR summary 13619a6ba5

Import changes for modified files

Dependency changes

File Base Count Head Count Change
Mathlib.GroupTheory.PGroup 1139 1140 +1 (+0.09%)
Import changes for all files
Files Import difference
4 files Mathlib.GroupTheory.Descent Mathlib.GroupTheory.PGroup Mathlib.GroupTheory.Torsion Mathlib.NumberTheory.NumberField.Units.Basic
1

Declarations diff (regex)

+ CommGroup.isCoatom_iff_index_eq_prime
+ CommGroup.isSimpleGroup_iff_isCoatom
+ IsPGroup.exists_index_eq_prime_ne_of_not_isCyclic
+ comapMk'OrderIso'
+ isCyclic_of_isCoatom_subsingleton

You can run this locally as follows
## from your `mathlib4` directory:
git clone https://github.com/leanprover-community/mathlib-ci.git ../mathlib-ci

## summary with just the declaration names:
../mathlib-ci/scripts/pr_summary/declarations_diff.sh <optional_commit>

## more verbose report:
../mathlib-ci/scripts/pr_summary/declarations_diff.sh long <optional_commit>

The doc-module for scripts/pr_summary/declarations_diff.sh in the mathlib-ci repository contains some details about this script.

Declarations diff (Lean)

Lean-aware diff — post-build, computed from the Lean environment (commit 13619a6).

  • +10 new declarations
  • −0 removed declarations
+AddCommGroup.isSimpleAddGroup_iff_isCoatom
+CommGroup.isCoatom_iff_index_eq_prime
+CommGroup.isSimpleGroup_iff_isCoatom
+IsPGroup.exists_index_eq_prime_ne_of_not_isCyclic
+QuotientAddGroup.comapMk'OrderIso'
+QuotientAddGroup.comapMk'OrderIso'_apply_coe
+QuotientGroup.comapMk'OrderIso'
+QuotientGroup.comapMk'OrderIso'_apply_coe
+isAddCyclic_of_isCoatom_subsingleton
+isCyclic_of_isCoatom_subsingleton

No changes to strong technical debt.

No changes to weak technical debt.

Current commit 13619a6ba5
Reference commit 2800ac2bd3

This script lives in the mathlib-ci repository. To run it locally, from your mathlib4 directory:

git clone https://github.com/leanprover-community/mathlib-ci.git ../mathlib-ci
../mathlib-ci/scripts/reporting/technical-debt-metrics.sh pr_summary
  • The relative value is the weighted sum of the differences with weight given by the inverse of the current value of the statistic.
  • The absolute value is the relative value divided by the total sum of the inverses of the current values (i.e. the weighted average of the differences).

Add `instance [Finite G] : Finite (Subgroup G)` (and `Finite (AddSubgroup A)` via `to_additive`), and use it to drop the inline `Finite (Subgroup G)` workaround in `IsPGroup.exists_index_eq_prime_ne_of_not_isCyclic`.
@mathlib-dependent-issues mathlib-dependent-issues Bot added the blocked-by-other-PR This PR depends on another PR (this label is automatically managed by a bot) label Jul 12, 2026
@mathlib-dependent-issues

Copy link
Copy Markdown

This PR/issue depends on:

Comment thread Mathlib/Algebra/Group/Subgroup/Finite.lean Outdated
@xroblot xroblot added the WIP Work in progress label Jul 13, 2026
@mathlib-merge-conflicts

Copy link
Copy Markdown

This pull request has conflicts, please merge master and resolve them.

@mathlib-merge-conflicts mathlib-merge-conflicts Bot added the merge-conflict The PR has a merge conflict with master, and needs manual merging. (this label is managed by a bot) label Jul 15, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

blocked-by-other-PR This PR depends on another PR (this label is automatically managed by a bot) merge-conflict The PR has a merge conflict with master, and needs manual merging. (this label is managed by a bot) t-group-theory Group theory WIP Work in progress

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants